import Interface.Student1;

/**
 * static 关键字:
 *  静态代码块: 静态代码块>构造代码块>构造方法,用途:用来一次性地对静态成员变量进行赋值;
 *  static成员变量，变量就是静态变量;静态变量不属于对象,而属于类的(多个对象共享);
 *  static成员方法，就成为了静态方法;静态方法不属于对象，而属于类的
 *      1. 静态不能直接访问非静态;
 *          原因:因为在内存当中是[先]有的静态内容,[后]有的非静态内容;"先人不知道后人,但是后人知道先人"
 *      2. 静态方法当中不能用this;
 */
public class Demo04Static {

    public static void main(String[] args) {
        /*---static静态变量----------*/
        Student1 two = new Student1("黄蓉", 16);

//        two.room = "101教室";  //不推荐
        Student1.room="101教室"; //static可以类名调用,推荐使用;

        System.out.println("姓名：" + two.getName()
                + "，年龄：" + two.getAge() + "，教室：" + two.room
                + "，学号：" + two.getId());

        Student1 one = new Student1("郭靖", 19);
        System.out.println("姓名：" + one.getName()
                + "，年龄：" + one.getAge() + "，教室：" + one.room
                + "，学号：" + one.getId());


        /*---static静态方法----------*/
        two.method();  //成员方法
//        two.methodStatic(); //不推荐,这种写法在编译之后也会被javac翻译成为“类名称.静态方法名”
        Student1.methodStatic(); //正常,推荐使用

       myMethod(); //自己的静态方法(不需要类名.调用,直接方法名);
    }

    public static void myMethod() {
        System.out.println("自己的静态方法！");
    }
}
